package com.ftg.learn.chapter07;

import com.sun.org.apache.xpath.internal.operations.Bool;

/**
 * 另外一个可变字符序列
 *   线程安全的可变字符序列
 *   字符串缓冲区可安全地供多个线程使用
 * 线程：线程（英语：thread）是操作系统能够进行运算调度的最小单位
 *  主函数 ： main就是一个线程,单线程顺序流(流程控制)
 *  线程是进程中的⼀个执⾏单元，负责当前进程中程序的执⾏，⼀个进程中⾄少有⼀个线程。⼀个进程中是可以有多个线程的，这个应⽤程序也可以称之为多线程程序
 *
 * 进程：是一个计算机可以运行的单元或者程序，它被包含在线程之中，是进程中的实际运作单位.
 *  是指⼀个内存中运⾏的应⽤程序，每个进程都有⼀个独⽴的内存空间，⼀个应⽤程序可以同时运⾏多个进程；进程也是程序的⼀次执⾏过程，是系统运⾏程序的基本单位；系统运⾏⼀个程序即是 ⼀个进程从创建、运⾏到消亡的过程
 *  cpu - 进程 -  线程（这段完成具体功能）
 *
 * 线程调度 :
 *    分时调度  ： 所有线程轮流使⽤ CPU 的使⽤权，平均分配每个线程占⽤ CPU 的时间。
 *    抢占式调度 ： 优先让优先级⾼的线程使⽤ CPU，如果线程的优先级相同，那么会随机选择⼀个（线程随机性）， Java使⽤的为抢占式调度。
 *
 *

 * 并行 ： 指两个或多个事件在同⼀时刻发⽣（同时发⽣）
 *   并行，同时刻访问人数.秒杀.
 * 并发 ： 指两个或多个事件在同⼀个时间段内发⽣。
 *   高并发 ： 软件在同一段时间内，允许事件数量，叫并发量，当并发量达到一定数量级，我们叫高并发.
 *
 *
 * 多线程 ： 一进程当中存在多个线程，共同完成操作。 线程安全.
 *  当我们使⽤多个线程访问同⼀资源的时候，且多个线程中对资源有写的操作，就容易出现线程安全问题。
 *  要解决上述多线程并发访问⼀个资源的安全性问题：也就是解决重复票与不存在票问题， Java 中提供了同 步机制 （ synchronized ） 来解决。
 *   线程同步 ： 当有一个线程在操作写入某一个资源，会产生其它线程与有权限写的问题，为了保证安全， （synchronized）
 *      聪明人员 ： Wc (有人 无人 现在的共有资源的使用状态)
 *   异步 ： 默认是异步。
 *
 * 共享线程：
 * 私有线程 :
 *
 * 操作字符串的时候 ，如果有多个线程，那么会不会产生线程安全性问题.
 *
 * 安全角度 ： 资源安全级别. StringBuffer [线程同步]
 * 性能角度 ： 处理速度,  StringBuilder
 *
 * @author kangjx
 * @date  2022/12/30
 */
public class LearnStringBuffer {

    public static void main(String[] args) {
//        LearnStringBuffer 从方法内容，名称上来讲，全一样

//        讲它们的不相同的地方
        StringBuffer stringBuffer = new StringBuffer(3);
        //默认 底层数组长度为  16
        //默认  用原始字符长度 + 16

        //append
//        synchronized 同步锁 排队
        stringBuffer.append(23).append("sss");
        System.out.println(stringBuffer.toString());
        StringBuilder sb = new StringBuilder();
        sb.append(23);

        //c919是飞机，飞机全仅仅是c919
        //

        //同步锁 ： 锁的是什么级别 ？  1 代码块  2 还是方法 3 还是实例?
    }


}
